package com.xbongbong.paas.service.init;

import com.xbongbong.admin.pojo.dto.MirrorRollBackDTO;
import com.xbongbong.paas.domain.entity.PaasAppEntity;
import com.xbongbong.paas.domain.entity.PaasFormEntity;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.menu.pojo.dto.MenuInitDTO;
import com.xbongbong.pro.menu.pojo.vo.MenuInitVO;

import java.util.List;
import java.util.Map;

/**
 * 应用初始化
 * @author 吴峰
 * @date 2022/11/03 10:19
 */
public interface InitMenuService {

    /**
     * 应用标识
     * @see com.xbongbong.pro.enums.menu.enums.SystemAppMenuEnum
     * @return
     */
    List<String> alias();

    /**
     * 开通应用
     * @param menuInitDTO
     * @return
     * @throws XbbException
     */
    MenuInitVO open(MenuInitDTO menuInitDTO) throws XbbException;




    /**
     * 初始化菜单
     * @param menuInitDTO
     * @return 返回信息
     * @throws XbbException
     */
    MenuInitVO initApp(MenuInitDTO menuInitDTO, Map<String, PaasAppEntity> appMap) throws XbbException;



    /**
     * 初始化菜单
     * @param menuInitDTO
     * @return 返回信息
     * @throws XbbException
     */
    MenuInitVO initMenu(MenuInitDTO menuInitDTO, Map<String, PaasAppEntity> appMap) throws XbbException;

    /**
     * 回退到初始化
     * @param mirrorRollBackDTO
     * @param installFormList
     * @param productFormEntity 产品实体
     * @throws XbbException
     */
    void rollBackInit(MirrorRollBackDTO mirrorRollBackDTO, List<Long> installFormList, PaasFormEntity productFormEntity) throws XbbException;

}
